package phoenix.core.helpers;

import phoenix.core.PhoenixManager;
import phoenix.core.base.HelperBase;
import phoenix.mob_site.page_objects.BrowsedPage;
import phoenix.mob_site.page_objects.ChatPage;
import phoenix.mob_site.page_objects.FavoritesPage;
import phoenix.mob_site.page_objects.FeaturesSelectionPage;
import phoenix.mob_site.page_objects.FunnelPage;
import phoenix.mob_site.page_objects.IndexPage;
import phoenix.mob_site.page_objects.MainMenu;
import phoenix.mob_site.page_objects.MembershipSelectionPage;
import phoenix.mob_site.page_objects.MessagedPage;
import phoenix.mob_site.page_objects.MessengerPage;
import phoenix.mob_site.page_objects.NaughtyModePage;
import phoenix.mob_site.page_objects.PaymentFailPage;
import phoenix.mob_site.page_objects.PaymentPage;
import phoenix.mob_site.page_objects.PaymentSuccessPage;
import phoenix.mob_site.page_objects.PhotoUploadMotivationPage;
import phoenix.mob_site.page_objects.PhotosPage;
import phoenix.mob_site.page_objects.ProfilePage;
import phoenix.mob_site.page_objects.SearchPage;
import phoenix.mob_site.page_objects.SearchParamsPage;
import phoenix.mob_site.page_objects.SearchProfilePage;
import phoenix.mob_site.page_objects.SettingsPage;
import phoenix.mob_site.page_objects.WinkedPage;

/**
 * Class provides methods for access to page objects (for Web sites)
 */
public class PageMobSiteHelper extends HelperBase
{
	// Page objects - sites
	private IndexPage indexPage;
	private FunnelPage funnelPage;
	private PhotoUploadMotivationPage photoUploadMotivationPage;
	private NaughtyModePage naughtyModePage;
	private SearchPage searchPage;
	private MainMenu mainMenu;
	// private NaughtyModePage naughtyModePage;
	private SearchParamsPage searchParamsPage;
	private SearchProfilePage searchProfilePage;
	private MessengerPage messengerPage;
	private BrowsedPage browsedPage;
	private MessagedPage messagedPage;
	private FavoritesPage favoritesPage;
	private ChatPage chatPage;
	private PhotosPage photosPage;
	private ProfilePage profilePage;
	private SettingsPage settingsPage;
	private WinkedPage winkedPage;
	private MembershipSelectionPage membershipSelectionPage;
	private FeaturesSelectionPage featuresSelectionPage;
	private PaymentPage paymentPage;
	private PaymentFailPage paymentFailPage;
	private PaymentSuccessPage paymentSuccessPage;

	/**
	 * Initializes PageWebHelper
	 * 
	 * @param p_phoenix
	 *        PhoenixManager instance
	 */
	public PageMobSiteHelper(PhoenixManager p_phoenix)
	{
		super(p_phoenix);
	}

	/**
	 * 'Funnel' page instance
	 * 
	 * @return FunnelPage instance
	 */
	public FunnelPage funnelPage()
	{
		if (funnelPage == null)
		{
			funnelPage = new FunnelPage(phoenix);
		}

		return funnelPage;
	}

	/**
	 * Index page instance
	 * 
	 * @return IndexPage instance
	 */
	public IndexPage indexPage()
	{
		if (indexPage == null)
		{
			indexPage = new IndexPage(phoenix);
		}
		return indexPage;
	}

	/**
	 * Search page instance
	 * 
	 * @return SearchPage instance
	 */
	public SearchPage searchPage()
	{
		if (searchPage == null)
		{
			searchPage = new SearchPage(phoenix);
		}
		return searchPage;
	}

	/**
	 * Search Main Menu page instance
	 * 
	 * @return SearchMainMenuPage instance
	 */
	public MainMenu mainMenu()
	{
		if (mainMenu == null)
		{
			mainMenu = new MainMenu(phoenix);
		}
		return mainMenu;
	}

	/**
	 * Browsed page instance
	 * 
	 * @return BrowsedPage instance
	 */
	public BrowsedPage browsedPage()
	{
		if (browsedPage == null)
		{
			browsedPage = new BrowsedPage(phoenix);
		}
		return browsedPage;
	}

	/**
	 * Messaged page instance
	 * 
	 * @return MessagedPage instance
	 */
	public MessagedPage messagedPage()
	{
		if (messagedPage == null)
		{
			messagedPage = new MessagedPage(phoenix);
		}
		return messagedPage;
	}

	/**
	 * Photos page instance
	 * 
	 * @return PhotosPage instance
	 */
	public PhotosPage photosPage()
	{
		if (photosPage == null)
		{
			photosPage = new PhotosPage(phoenix);
		}
		return photosPage;
	}

	/**
	 * Profile page instance
	 * 
	 * @return ProfilePage instance
	 */
	public ProfilePage profilePage()
	{
		if (profilePage == null)
		{
			profilePage = new ProfilePage(phoenix);
		}
		return profilePage;
	}

	/**
	 * Settings page instance
	 * 
	 * @return SettingsPage instance
	 */
	public SettingsPage settingsPage()
	{
		if (settingsPage == null)
		{
			settingsPage = new SettingsPage(phoenix);
		}
		return settingsPage;
	}

	/**
	 * Winked page instance
	 * 
	 * @return WinkedPage instance
	 */
	public WinkedPage winkedPage()
	{
		if (winkedPage == null)
		{
			winkedPage = new WinkedPage(phoenix);
		}
		return winkedPage;
	}

	/**
	 * Favorites page instance
	 * 
	 * @return FavoritesPage instance
	 */
	public FavoritesPage favoritesPage()
	{
		if (favoritesPage == null)
		{
			favoritesPage = new FavoritesPage(phoenix);
		}
		return favoritesPage;
	}

	/**
	 * Chat page instance
	 * 
	 * @return ChatPage instance
	 */
	public ChatPage chatPage()
	{
		if (chatPage == null)
		{
			chatPage = new ChatPage(phoenix);
		}
		return chatPage;
	}

	/**
	 * Photo Upload Motivation page instance
	 * 
	 * @return PhotoUploadMotivationPage instance
	 */
	public PhotoUploadMotivationPage photoUploadMotivationPage()
	{
		if (photoUploadMotivationPage == null)
		{
			photoUploadMotivationPage = new PhotoUploadMotivationPage(phoenix);
		}
		return photoUploadMotivationPage;
	}

	/**
	 * Naughty Mode Page instance
	 * 
	 * @return MessengerPage instance
	 */
	public NaughtyModePage naughtyModePage()
	{
		if (naughtyModePage == null)
		{
			naughtyModePage = new NaughtyModePage(phoenix);
		}
		return naughtyModePage;
	}

	/**
	 * Membership Selection page instance
	 * 
	 * @return MembershipSelectionPage instance
	 */
	public MembershipSelectionPage membershipSelectionPage()
	{
		if (membershipSelectionPage == null)
		{
			membershipSelectionPage = new MembershipSelectionPage(phoenix);
		}
		return membershipSelectionPage;
	}

	/**
	 * Payment page instance
	 * 
	 * @return PaymentPage instance
	 */
	public PaymentPage paymentPage()
	{
		if (paymentPage == null)
		{
			paymentPage = new PaymentPage(phoenix);
		}
		return paymentPage;
	}

	/**
	 * Payment Fail page instance
	 * 
	 * @return PaymentFailPage instance
	 */
	public PaymentFailPage paymentFailPage()
	{
		if (paymentFailPage == null)
		{
			paymentFailPage = new PaymentFailPage(phoenix);
		}
		return paymentFailPage;
	}

	/**
	 * Payment Success page instance
	 * 
	 * @return PaymentSuccessPage instance
	 */
	public PaymentSuccessPage paymentSuccessPage()
	{
		if (paymentSuccessPage == null)
		{
			paymentSuccessPage = new PaymentSuccessPage(phoenix);
		}
		return paymentSuccessPage;
	}

	/**
	 * Features Selection Page instance
	 * 
	 * @return PaymentPage instance
	 */
	public FeaturesSelectionPage featuresSelectionPage()
	{
		if (featuresSelectionPage == null)
		{
			featuresSelectionPage = new FeaturesSelectionPage(phoenix);
		}
		return featuresSelectionPage;
	}

	/**
	 * Search Parameters Page instance
	 * 
	 * @return SearchParamsPage instance
	 */
	public SearchParamsPage searchParamsPage()
	{
		if (searchParamsPage == null)
		{
			searchParamsPage = new SearchParamsPage(phoenix);
		}
		return searchParamsPage;
	}

	/**
	 * Search Profile Page instance
	 * 
	 * @return SearchProfilePage instance
	 */
	public SearchProfilePage searchProfilePage()
	{
		if (searchProfilePage == null)
		{
			searchProfilePage = new SearchProfilePage(phoenix);
		}
		return searchProfilePage;
	}

	/**
	 * Messenger Page instance
	 * 
	 * @return MessengerPage instance
	 */
	public MessengerPage messengerPage()
	{
		if (messengerPage == null)
		{
			messengerPage = new MessengerPage(phoenix);
		}
		return messengerPage;
	}
}